import request from '@/utils/request'

// 获取购物车列表
export function getCartItems() {
  return request({
    url: '/cart',
    method: 'get'
  }).catch(error => {
    // 如果是404错误，返回空数组
    if (error.response && error.response.status === 404) {
      return { data: [], success: true }
    }
    // 其他错误继续抛出
    return Promise.reject(error)
  })
}

// 添加到购物车
export function addToCart(data) {
  return request({
    url: '/cart',
    method: 'post',
    data
  })
}

// 从购物车移除
export function removeFromCart(id) {
  return request({
    url: `/cart/${id}`,
    method: 'delete'
  }).catch(error => {
    // 如果是404错误，视为已移除
    if (error.response && error.response.status === 404) {
      return { success: true, message: '已从购物车移除' }
    }
    return Promise.reject(error)
  })
}

// 清空购物车
export function clearCartItems() {
  return request({
    url: '/cart',
    method: 'delete'
  }).catch(error => {
    // 如果是404错误，视为已清空
    if (error.response && error.response.status === 404) {
      return { success: true, message: '购物车已清空' }
    }
    return Promise.reject(error)
  })
}

// 结算购物车
export function checkoutCart(data) {
  return request({
    url: '/cart/checkout',
    method: 'post',
    data
  })
}

// 检查购物车状态 - 用于初始化时检查购物车API是否可用
export function checkCartStatus() {
  return request({
    url: '/cart/status',
    method: 'get'
  }).catch(error => {
    if (error.response) {
      switch (error.response.status) {
        case 401:
          // 未登录时返回可用，但需要登录
          return { data: { available: true, requireLogin: true }, success: true }
        case 404:
          // 404表示购物车功能确实不可用
          return { data: { available: false, requireLogin: false }, success: true }
        default:
          // 其他错误也返回不可用
          return { data: { available: false, requireLogin: false }, success: true }
      }
    }
    // 网络错误等情况
    return { data: { available: false, requireLogin: false }, success: true }
  })
}